// 知识点1：我们可以通过将拷贝控制成员定义为 =default
// 来显式的要求编译器生成合成的版本(只能对有合成版本的函数使用)，在此之后，合成的函数将隐式的声明为内联

// 知识点2：iostream类阻止了拷贝，避免多个对象同时写入，或读取相同的IO缓冲，我们可以将拷贝构造函数和拷贝赋值运算符定义为删除的函数来阻止拷贝，虽然声明了他们，但不能以任何的方式使用他们，在参数列表之后加上
// =delete
// 来指出我们希望其是被删除的，这是为了通知编译器，我们不希望这些函数被定义

// 知识点3：可以对任何类内函数(析构函数除外)声明 =delete
// ，且必须出现在函数第一次声明的时候，如果析构函数被声明=delete
// ，析构函数被删除，就无法销毁此类型的对象

// 知识点4：本质上，当不可能拷贝、赋值、销毁类的成员时，类的拷贝构造函数会被定义为删除的

// 知识点5：C++11之前，是将拷贝构造函数和拷贝赋值运算符定义为private来阻止拷贝的(旧标准)
// 见下方19题：